﻿@* Supprimer cette section si le regroupement est utilisé *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Réinitialisation du mot de passe";

    var passwordResetToken = Request.Form["resetToken"] ?? Request.QueryString["resetToken"];

    bool tokenExpired = false;
    bool isSuccess = false;

    // Validation de la configuration
    Validation.RequireField("newPassword", "Le champ Nouveau mot de passe est obligatoire.");
    Validation.Add("confirmPassword",
        Validator.EqualsTo("newPassword", "Le nouveau mot de passe et le mot de passe de confirmation ne correspondent pas."));
    Validation.RequireField("passwordResetToken", "Le champ Jeton de réinitialisation du mot de passe est obligatoire.");
    Validation.Add("newPassword",
        Validator.StringLength(
            maxLength: Int32.MaxValue,
            minLength: 6,
            errorMessage: "Le nouveau mot de passe doit comporter au moins 6 caractères"));

    if (IsPost && Validation.IsValid()) {
        AntiForgery.Validate();
        var newPassword = Request["newPassword"];
        var confirmPassword = Request["confirmPassword"];

        if (WebSecurity.ResetPassword(passwordResetToken, newPassword)) {
            isSuccess = true;
        } else {
            ModelState.AddError("passwordResetToken", "Le jeton de réinitialisation du mot de passe n'est pas valide.");
            tokenExpired = true;
        }
    }
}

<hgroup class="title">
    <h1>@Page.Title.</h1>
    <h2>Utilisez le formulaire ci-dessous pour réinitialiser votre mot de passe.</h2>
</hgroup>

@if (!WebMail.SmtpServer.IsEmpty()) {
    if (!Validation.IsValid()) {
        <p class="validation-summary-errors">
            @if (tokenExpired) {
                <text>Le jeton de réinitialisation du mot de passe est incorrect ou a peut-être expiré. Consultez la <a href="~/Account/ForgotPassword">page Mot de passe oublié</a> 
                pour en générer un nouveau.</text>
            } else {
                <text>Réinitialisation du mot de passe impossible. Corrigez les erreurs et réessayez.</text>
            }
        </p>
    }

    if (isSuccess) {
        <p class="message-success">
            Mot de passe modifié ! Cliquez <a href="~/Account/Login" title="Log in">ici</a> pour vous connecter.
        </p>
    }

    <form method="post">
        @AntiForgery.GetHtml()
        <fieldset>
            <legend>Formulaire de changement de mot de passe</legend>
            <ol>
                <li class="new-password">
                    <label for="newPassword" @if (!ModelState.IsValidField("newPassword")) {<text>class="error-label"</text>}>Nouveau mot de passe</label> 
                    <input type="password" id="newPassword" name="newPassword" disabled="@isSuccess" @Validation.For("newPassword") />
                    @Html.ValidationMessage("newPassword")
                </li>
                <li class="confirm-password">
                    <label for="confirmPassword" @if (!ModelState.IsValidField("confirmPassword")) {<text>class="error-label"</text>}>Confirmer le mot de passe</label> 
                    <input type="password" id="confirmPassword" name="confirmPassword" disabled="@isSuccess" @Validation.For("confirmPassword") />
                    @Html.ValidationMessage("confirmPassword")
                </li>
                <li class="reset-token">
                    <label for="resetToken" @if (!ModelState.IsValidField("resetToken")) {<text>class="error-label"</text>}>Jeton de réinitialisation du mot de passe</label> 
                    <input type="text" id="resetToken" name="resetToken" value="@passwordResetToken" disabled="@isSuccess" @Validation.For("resetToken") />
                    @Html.ValidationMessage("resetToken")
                </li>
            </ol>
            <input type="submit" value="Réinitialiser le mot de passe" disabled="@isSuccess"/>
        </fieldset>
    </form>
} else {
    <p class="message-info">
        La récupération du mot de passe est désactivée pour ce site Web car le serveur SMTP n'est 
        pas configuré correctement. Veuillez contacter le propriétaire de ce site pour réinitialiser 
       votre mot de passe.
    </p>
}
